public enum OBJECT_TYPE
{
    TYPE_OBJECT,
    TYPE_LOCATABLEOBJECT,
    TYPE_STATICOBJECT,
    TYPE_AURAOBJECT,
    TYPE_UNIT,
    TYPE_CREATURE,
    TYPE_PLAYER,
    TYPE_AUTOPLAYER,
    TYPE_MAX
};

enum OBJECT_TYPE_FLAG
{
	TYPE_OBJECT_FLAG		  = (1 << OBJECT_TYPE.TYPE_OBJECT),
	TYPE_LOCATABLEOBJECT_FLAG = (1 << OBJECT_TYPE.TYPE_LOCATABLEOBJECT) | TYPE_OBJECT_FLAG,
	TYPE_STATICOBJECT_FLAG	  = (1 << OBJECT_TYPE.TYPE_STATICOBJECT)	| TYPE_LOCATABLEOBJECT_FLAG,
	TYPE_AURAOBJECT_FLAG	  = (1 << OBJECT_TYPE.TYPE_AURAOBJECT)		| TYPE_LOCATABLEOBJECT_FLAG,
	TYPE_UNIT_FLAG			  = (1 << OBJECT_TYPE.TYPE_UNIT)			| TYPE_LOCATABLEOBJECT_FLAG,
	TYPE_CREATURE_FLAG		  = (1 << OBJECT_TYPE.TYPE_CREATURE)		| TYPE_UNIT_FLAG,
	TYPE_PLAYER_FLAG		  = (1 << OBJECT_TYPE.TYPE_PLAYER)			| TYPE_UNIT_FLAG,
	TYPE_AUTOPLAYER_FLAG	  = (1 << OBJECT_TYPE.TYPE_AUTOPLAYER)		| TYPE_PLAYER_FLAG,
};

public enum OBJECT_PROPERTIES
{
    OBJECT_FIELD_FLAGS,
    OBJECT_END
};

public enum LOCATABLEOBJECT_PROPERTIES
{
    LOBJ_FIELD_FLAGS = OBJECT_PROPERTIES.OBJECT_END,
    LOBJ_END,
};

public enum STATICOBJECT_PROPERTIES
{
    SOBJ_FIELD_FLAGS = LOCATABLEOBJECT_PROPERTIES.LOBJ_END,
    SOBJ_END,
};

public enum AURAOBJECT_PROPERTIES
{
    AOBJ_FIELD_FLAGS = LOCATABLEOBJECT_PROPERTIES.LOBJ_END,
    AOBJ_END,
};

public enum UNIT_PROPERTIES
{
    UNIT_FIELD_FLAGS = LOCATABLEOBJECT_PROPERTIES.LOBJ_END,
    UNIT_FIELD_LEVEL,

    UNIT_FLOAT_MOVE_SPEED,
    UNIT_FLOAT_MOVE_SPEED_INC,
    UNIT_FLOAT_TURN_SPEED,
    UNIT_FLOAT_TURN_SPEED_INC,

    UNIT_FIELD_AURA_FLAGS,

    UNIT_FIELD_TEAM_SIDE,

    UNIT_END,
};

public enum CREATURE_PROPERTIES
{
    CREATURE_FIELD_FLAGS = UNIT_PROPERTIES.UNIT_END,
    CREATURE_END,
};

public enum PLAYER_PROPERTIES
{
    PLAYER_FIELD_FLAGS = UNIT_PROPERTIES.UNIT_END,
    PLAYER_FIELD_CAREER,
    PLAYER_FIELD_GENDER,

    PLAYER_FIELD_PVP_FLAGS,

    PLAYER_END,
};

public enum AUTOPLAYER_PROPERTIES
{
    APC_FIELD_FLAGS = PLAYER_PROPERTIES.PLAYER_END,
    APC_END,
};

public enum OBJECT64_PROPERTIES
{
    OBJECT64_FIELD_FLAGS,
    OBJECT64_END
};

public enum LOCATABLEOBJECT64_PROPERTIES
{
    LOBJ64_FIELD_FLAGS = OBJECT64_PROPERTIES.OBJECT64_END,
    LOBJ64_END,
};

public enum STATICOBJECT64_PROPERTIES
{
    SOBJ64_FIELD_FLAGS = LOCATABLEOBJECT64_PROPERTIES.LOBJ64_END,
    SOBJ64_END,
};

public enum AURAOBJECT64_PROPERTIES
{
    AOBJ64_FIELD_FLAGS = LOCATABLEOBJECT64_PROPERTIES.LOBJ64_END,
    AOBJ64_END,
};

public enum UNIT64_PROPERTIES
{
    UNIT64_FIELD_FLAGS = LOCATABLEOBJECT64_PROPERTIES.LOBJ64_END,

    UNIT64_FIELD_HP,
    UNIT64_FIELD_HP_MAX,
    UNIT64_FIELD_MP,
    UNIT64_FIELD_MP_MAX,

    UNIT64_END,
};

public enum CREATURE64_PROPERTIES
{
    CREATURE64_FIELD_FLAGS = UNIT64_PROPERTIES.UNIT64_END,
    CREATURE64_END,
};

public enum PLAYER64_PROPERTIES
{
    PLAYER64_FIELD_FLAGS = UNIT64_PROPERTIES.UNIT64_END,

    PLAYER64_FIELD_EXP,
    PLAYER64_FIELD_LVUP_EXP,

    PLAYER64_FIELD_FIGHT_VALUE,

    PLAYER64_FIELD_CURRENCY_BEGIN,
    PLAYER64_FIELD_CURRENCY_END = PLAYER64_FIELD_CURRENCY_BEGIN + CurrencyType.Max - 1,

    PLAYER64_END,
};

public enum AUTOPLAYER64_PROPERTIES
{
    APC64_FIELD_FLAGS = PLAYER64_PROPERTIES.PLAYER64_END,
    APC64_END,
};
